<?php

define('DRUPAL_ROOT', getcwd());

require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
menu_execute_active_handler();



buchong();


/**
 * 组建api请求参数的函数
 */
function buchong_apiurl($type='phone',$id=0,$page=1){
    $apiurl = variable_get('api_url');                  //api地址
    $user = variable_get('api_username');               //帐号
    $pass = variable_get('api_password');               //密码
    $cb = "json";                                       //支持JSON和XML
    $d  = $type;

    //$yid = variable_get('api_webid');                    //站点id
    $yid = $id;
    $params ='&user='.$user.'&pass='.$pass.'&cb='.$cb.'&d='.$d.'&yid='.$yid.'&limit=100'.'&page='.$page.'&time=5'; //&time=5是获取一年的数据 通常就获取今天的数据这个是做测试用
    return $apiurl.'?'.$params;
}

/**
 * Implementation hook_cron
 * 通过请求api获取phone资源信息并将其筛分插入数据库当中
 */
function buchong(){
    if(variable_get('api_switch', 'off')=='off'){   //对是否开启进行一个判断
        return false;
    }
//    接下来要运行的命令
    buchong_phone();        //获取phone请求
    buchong_qq();           //获取qq请求的
    echo 'ok';
}

function duo_huoqu($type){
    $urls = variable_get('webinfo',array());
    $return = array(
        'total' => 0,
        'row' => array()
    );
    foreach($urls as $v){
        $url = buchong_apiurl($type,$v['id']);
        $res = json_decode(buchong_getdata($url),TRUE);        //请求api并获取数据并转成数组
        if($res['total']==0){
            continue;
        }
        $return['row'] = array_merge($return['row'],$res['row']);
        $page = ceil($res['total']/100);

        for($i=0;$i<$page;$i++){
            if($i>0){
                $url2 = buchong_apiurl($type,$v['id'],$i+1);
                $res2 = json_decode(buchong_getdata($url2),TRUE);
                $return['row'] = array_merge($return['row'],$res2['row']);
            }
        }
        $return['total'] = $return['total'] + $res['total'];
    }

    $data = array();
    foreach($return['row'] as $vv){
        $time = strtotime($vv['time']);
        for($i=20;$i<26;$i++){
            $zao1 = strtotime("2016-04-{$i} 00:00:00");
            $zao2 =	strtotime("2016-04-{$i} 10:00:00");
            $wan1 = strtotime("2016-04-{$i} 20:00:00");
            $wan2 = strtotime("2016-04-{$i} 23:59:59");
            if($time>$zao1 && $time<$zao2){
                $data[] = $vv;
            }
            if($time>$wan1 && $time<$wan2){
                $data[] = $vv;
            }
        }
    }
    $return = array(
        'total' => count($data),
        'row' => $data,
    );

    return $return;
}

/**
 * 通过api获取电话信息
 */
function buchong_phone(){
    //    如果没有设置分类的话就无法进行下去
    $yd_res_source = variable_get('yd_res_source',0);
    $yd_res_type = variable_get('yd_res_type',0);
    if($yd_res_source ==0 || $yd_res_type ==0 ){        //判定如果用户没有设置默认配置则无法插入
        return false;
    }

    $expires = variable_get('buchong_module_last_phone',REQUEST_TIME-7200);   //获取判定时间 如果没有就默认一小时前

    $return = duo_huoqu('phone');

    $nums = 0;
    $totalNum = 0;
    if((int)$return['total']>0){            //在有返回值的情况下才能进行下一步

        $totalNum = $return['total'];       //获取本次获取的资源的总数,等到一会放入数据库当中

        $content = array();
        foreach($return['row'] as $row){    //将请求时间内访问的用户筛选出来

//            if(strtotime($row['time'])>=$expires){
                $content[] = $row;
//            }
        }
        if(!empty($content)){

            foreach($content as $item){    //将这些新数据先检查再放入数据库  判定数据库中的号码是否有重复的
                $res1 = db_select('wf_resource', 'n')->fields('n')
                    ->condition('contact_mobile',$item['phone'],'=')
                    ->execute()
                    ->fetchAssoc();
                $res2 = db_select('wf_resource', 'n')->fields('n')
                    ->condition('contact_mobile2',$item['phone'],'=')
                    ->execute()
                    ->fetchAssoc();
                //数据查两遍可以直接走索引而不是or带来的全表检索
                if(!$res1 && !$res2){           //如果数据库 电话号1,2都不存在这条资源 可以插入

                    $body = '手机型号:'.$item['xh'].';号码归属地:'.$item['gsd'].';<br>入口标题:'.$item['title'].';关键字:'.$item['keywords'].';<br>访问时间:'.$item['time'];
                    $field = array(
                        'uid' => 1,
                        'name' => 'admin',
                        'contact_name' =>'手机访问',       //获取的姓名统一改成 手机访问
                        'contact_mobile' => $item['phone'],
                        'contact_mobile2' => '',
                        'contact_sns' => '',
                        'contact_wechat' => '',
                        'budget' => '',
                        'body' => $body,             //将接收到的信息整合在一起放到备注当中
                        'bumen' => 0,
                        'res_source' => $yd_res_source,      //来源是 来自手机端
                        'res_type' => $yd_res_type,          //默认婚纱摄影
                        'created' => strtotime($item['time']),
                    );

                    $res = db_insert('wf_resource')->fields($field)->execute(); //将数据插入数据库

                    if($res){
                        variable_set('buchong_module_last_phone', REQUEST_TIME);                                //重新设定运行时间
                        $nums++;
                    }else{
                        watchdog('res',json_encode($field));
                    }


                }
            }
            $content = array(); //将数组放空

        }

    }

    //            合并统计记录表 如果当天的记录已经存在就更新 不存在就插入
    $oldArr = db_select('api_statistical','ap')->fields('ap')->condition('created',strtotime('today'),'=')->execute()->fetchAssoc();
    $mobileNum = $oldArr['mobile'];
    if($oldArr){
        db_update('api_statistical')->condition('created',strtotime('today'),'=')->fields(array('mobile'=>$mobileNum+$nums,'mobile_total'=>$totalNum))->execute();
    }else{
        $new = array(
            'mobile' => $nums,
            'mobile_total' => $totalNum,
            'created'=>strtotime('today'),
            'qq' => 0
        );
        db_insert('api_statistical')->fields($new)->execute();
    }
}

/**
 * Implementation hook_cron
 * 通过请求api获取QQ资源信息并将其筛分插入数据库当中
 */
function buchong_qq(){
//    如果没有设置分类的话就无法进行下去
    $yd_res_source = variable_get('yd_res_source',0);
    $yd_res_type = variable_get('yd_res_type',0);

    if($yd_res_source ==0 || $yd_res_type ==0 ){        //判定如果用户没有设置默认配置则无法插入
        return false;
    }

    $expires = variable_get('buchong_module_last_run',REQUEST_TIME-7200);   //获取判定时间 如果没有就默认一小时前

    $return = duo_huoqu('qq');

    $nums = 0;

    if((int)$return['total']>0){            //在有返回值的情况下
        $content = array();
        foreach($return['row'] as $row){    //将请求时间内访问的用户筛选出来
//            if(strtotime($row['time'])>=$expires){
                $content[] = $row;
//            }
        }
        if(!empty($content)){


            foreach($content as $item){    //将这些新数据先检查再放入数据库  判定数据库中的号码是否有重复的
                $res = db_select('wf_resource', 'n')->fields('n')
                    ->condition('contact_sns',$item['qq'],'=')
                    ->execute()
                    ->fetchAssoc();
                //数据查两遍可以直接走索引而不是or带来的全表检索
                if(!$res){           //如果数据库 qq不存在这条资源 可以插入
                    $body = '昵称:'.$item['name'].';ip归属地:'.$item['city'].';<br>入口标题:'.$item['title'].';关键字:'.$item['keywords'].';<br>访问时间:'.$item['time'];
                    $field = array(
                        'uid' => 1,
                        'name' => 'admin',
                        'contact_name' =>'QQ访问',       //获取的姓名统一改成 手机访问
                        'contact_mobile' => '',
                        'contact_mobile2' => '',
                        'contact_sns' =>$item['qq'],
                        'contact_wechat' => '',
                        'budget' => '',
                        'body' => $body,             //将接收到的信息整合在一起放到备注当中
                        'bumen' => 0,
                        'res_source' => $yd_res_source,      //来源是 来自手机端
                        'res_type' => $yd_res_type,          //默认婚纱摄影
                        'created' => strtotime($item['time']),
                    );
                    $res = db_insert('wf_resource')->fields($field)->execute(); //将数据插入数据库
                    if($res){
                        variable_set('buchong_module_last_run', REQUEST_TIME);                                //重新设定运行时间
                        $nums++;
                    }
                }
            }

            $content = array(); //将数组放空

        }

    }

    //            合并统计记录表 如果当天的记录已经存在就更新 不存在就插入
    $oldArr = db_select('api_statistical','qp')->fields('qp')->condition('created',strtotime('today'),'=')->execute()->fetchAssoc();
    $qqNum = $oldArr['qq'];
    if($oldArr){
        db_update('api_statistical')->condition('created',strtotime('today'),'=')->fields(array('qq'=>$qqNum+$nums))->execute();
    }else{
        $new = array(
            'mobile' => 0,
            'created'=>strtotime('today'),
            'qq' => $nums
        );
        db_insert('api_statistical')->fields($new)->execute();
    }

}


/**
 * 每次请求的时候都会验证一下到期时间
 */
function buchong_info(){
    $url = buchong_apiurl('user');
    $expires = variable_get('api_outtime',0);
    if($expires>strtotime('today')){
        return;
    }
    $return =json_decode(buchong_getdata($url),TRUE);
    variable_set('api_outtime',$return['outtime']);   //储存用户到期时间
    variable_set('api_state',$return['state']);       //储存用户使用的版本
    variable_set('api_name',$return['name']);         //储存用户名
}

//获取api数据连接的函数
function buchong_getdata($url) {
    $ch = curl_init();                               // 创建一个cURL资源

    curl_setopt($ch, CURLOPT_URL, $url);             // 设置URL和相应的选项
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在启用 CURLOPT_RETURNTRANSFER 时候将获取

    $response = curl_exec($ch);                      // 抓取URL并把它传递给浏览器

    curl_close($ch);                                 // 关闭cURL资源，并且释放系统资源

    return $response;
}
